package com.cencat.route.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 路线发票查询条件VO
 * 
 * @author cencat
 * @version 1.0
 * @since 2024-01-01
 */
@Data
@Schema(description = "路线发票查询条件")
public class RouteInvoiceQueryVO {

    @Schema(description = "发票号码")
    private String invoiceNumber;

    @Schema(description = "路线ID")
    private Long routeId;

    @Schema(description = "商户ID")
    private Long merchantId;

    @Schema(description = "发票类型")
    private String invoiceType;

    @Schema(description = "发票状态")
    private String invoiceStatus;

    @Schema(description = "开票方名称")
    private String issuerName;

    @Schema(description = "开票方税号")
    private String issuerTaxNumber;

    @Schema(description = "收票方名称")
    private String recipientName;

    @Schema(description = "收票方税号")
    private String recipientTaxNumber;

    @Schema(description = "最小发票金额")
    private BigDecimal minInvoiceAmount;

    @Schema(description = "最大发票金额")
    private BigDecimal maxInvoiceAmount;

    @Schema(description = "最小税额")
    private BigDecimal minTaxAmount;

    @Schema(description = "最大税额")
    private BigDecimal maxTaxAmount;

    @Schema(description = "税率")
    private BigDecimal taxRate;

    @Schema(description = "开票时间-开始")
    private LocalDateTime issueTimeBegin;

    @Schema(description = "开票时间-结束")
    private LocalDateTime issueTimeEnd;

    @Schema(description = "作废时间-开始")
    private LocalDateTime cancelTimeBegin;

    @Schema(description = "作废时间-结束")
    private LocalDateTime cancelTimeEnd;

    @Schema(description = "创建开始时间")
    private LocalDateTime createStartTime;

    @Schema(description = "创建结束时间")
    private LocalDateTime createEndTime;

    @Schema(description = "更新开始时间")
    private LocalDateTime updateStartTime;

    @Schema(description = "更新结束时间")
    private LocalDateTime updateEndTime;

    @Schema(description = "创建人ID")
    private Long createdBy;

    @Schema(description = "更新人ID")
    private Long updatedBy;

    @Schema(description = "开票人ID")
    private Long issuedBy;

    @Schema(description = "作废人ID")
    private Long cancelledBy;

    @Schema(description = "是否删除")
    private Boolean deleted;

    @Schema(description = "关键字搜索（发票号码、开票方名称、收票方名称）")
    private String keyword;

    @Schema(description = "排序字段")
    private String sortField;

    @Schema(description = "排序方向（ASC/DESC）")
    private String sortOrder;

}